package hy;

import hy.util.Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TokenController {
 
    @Autowired
    private Util tokenService;
    @Autowired
    private StringRedisTemplate tmp;
    @GetMapping("/login")
    public String login(String name,String pass){
        System.out.println("name:"+name+",pass:"+pass);
        return tokenService.generateToken();
    }
 
    /**
     * 接口幂等性测试接口
     *
     * @param token 幂等 Token 串
     * @return 执行结果
     */
    @PostMapping("/test")
    public String test(@RequestHeader("token") String token) {
        // 根据 Token 和与用户相关的信息到 Redis 验证是否存在对应的信息
        boolean result = tokenService.validToken(token);
        if(result){
            //1.执行正常业务
            //2.业务执行完毕后删除token
            tmp.delete(Util.TOKEN_PREFIX+token);
        }
        // 根据验证结果响应不同信息
        return result ? "正常调用" : "重复调用";
    }
}